package cn.micai.base.thread;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.TimeUnit;

/**
 * 描述：并发类容器之Queue
 * <p>
 *
 * @author: 赵新国
 * @date: 2018/2/22 16:23
 */
public class UseQueue2 {

    /**
     * ArrayBlockingQueue向队列添加元素有三种方法，分别是put、add、offer。这三个方法虽然都是添加元素，但是作用却不同。首先我们来看下put方法，如下所示，我们给队列设置容量为5，然后故意向容器中添加6个元素，看是什么效果。
     * @param args
     */
    public static void main(String [] args) {
        try {
            ArrayBlockingQueue<String> arrayBlockingQueue = new ArrayBlockingQueue<String>(5);
            /*arrayBlockingQueue.put("a");
            arrayBlockingQueue.put("b");
            arrayBlockingQueue.put("c");
            arrayBlockingQueue.put("d");
            arrayBlockingQueue.put("e");
            arrayBlockingQueue.put("f");*/

            /*arrayBlockingQueue.add("a");
            arrayBlockingQueue.add("b");
            arrayBlockingQueue.add("c");
            arrayBlockingQueue.add("d");
            arrayBlockingQueue.add("e");
            arrayBlockingQueue.add("f");*/

            arrayBlockingQueue.offer("a");
            arrayBlockingQueue.offer("b");
            arrayBlockingQueue.offer("c");
            arrayBlockingQueue.offer("d");
            arrayBlockingQueue.offer("e");
            System.out.println(arrayBlockingQueue.offer("f",3, TimeUnit.SECONDS));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
